# -*- coding: utf-8 -*-
from django.db import models
from datetime import timedelta

from comum.models import Pessoa, Orgao, Setor

class UnidadePagadora(models.Model):
    orgao = models.ForeignKey(Orgao)
    codigo = models.IntegerField(u'Código', unique=True)
    nome = models.CharField(u'Nome', max_length=50, unique=True)
    sigla = models.CharField(u'Sigla', max_length=15, unique=True)
    
    class Meta:
        verbose_name = u'Unidade Pagadora'
        verbose_name_plural = u'Unidades Pagadoras'
    
    def __unicode__(self):
        return '%s - %s' % (self.codigo, self.sigla)

class Cargo(models.Model):
    cargo = models.CharField(u'Cargo', max_length=100, unique=True)
    
    class Meta:
        verbose_name = u'Cargo'
        verbose_name_plural = u'Cargos'
    
    def __unicode__(self):
        return '%s' % self.cargo

class Servidor(Pessoa):
    matricula = models.CharField(u'Matrícula', max_length=20, unique=True)
    matricula_siape = models.CharField(u'Matrícula SIAPE', max_length=20, unique=True)
    cargo = models.ForeignKey(Cargo)
    setor = models.ForeignKey(Setor, null=True, blank=True)
    
    data_admissao = models.DateTimeField(u'Data de Admissão', null=True, blank=True)
    
    nec_especial = models.BooleanField(u'Necessecidade Especial', blank=True)
    tipo_nec_especial = models.CharField(u'Tipo de Necessidade Especial', max_length=50, null=True, blank=True)
    
    orgao_expeditor = models.CharField(u'Órgão Expeditor', max_length= 10, null=True, blank=True)
    data_expedicao = models.DateTimeField(u'Data de Expedição', null=True, blank=True)
    pis_pasep = models.IntegerField(u'PIS/PASEP', null=True, blank=True)
    
    inscricao_teleitor = models.IntegerField(u'Nº do Título de Eleitor', null=True, blank=True)
    zona_teleitor = models.IntegerField(u'Zona do Título de Eleitor', null=True, blank=True)
    secao_teleitor = models.IntegerField(u'Seção do Título de Eleitor', null=True, blank=True)
    
    num_militar = models.CharField(u'Nº Comprov. Militar', max_length=25, null=True, blank=True)
    org_militar = models.CharField(u'Órg. Comprov. Militar', max_length=25, null=True, blank=True)
    serie_militar = models.CharField(u'Série Comprov. Militar', max_length=25, null=True, blank=True)
    num_passaporte = models.CharField(u'Nº Passaporte', max_length=25, null=True, blank=True)
    
    grupo_sanguineo = models.CharField(u'Grupo sanguíneo', max_length=2, null=True, blank=True)
    fator_rh = models.CharField(u'Fator RH', max_length=8, null=True, blank=True)
    raca = models.CharField(u'Cor/Raça', max_length= 10, null=True, blank=True)
    escolaridade = models.CharField(u'Escolaridade', max_length=5, null=True, blank=True)
    ativo = models.BooleanField(u'Ativo', default=True)

    class Meta:
        verbose_name=u'Servidor'
        verbose_name_plural=u'Servidores'
    
    def __unicode__(self):
        return '%s' % self.nome

    def get_dependentes(self): 
        return self.dependente_set.order_by('id')
    
    def get_atestados(self):
        return self.atestadosaude_set.order_by('-id')
    
class DadoFuncional(models.Model):
    servidor = models.ForeignKey(Servidor)
    unidade_pagadora = models.ForeignKey(UnidadePagadora)

    class Meta:
        verbose_name=u'Dado Funcional'
        verbose_name_plural=u'Dados Funcionais'
    
    def __unicode__(self):
        return '%s' % (self.servidor.nome)
    
class Dependente(Pessoa):
    servidor = models.ForeignKey(Servidor)
    grau_parentesco = models.CharField(u'Grau de Parentesco', max_length=20, null=True, blank=True)
    
    cn_livro = models.CharField(u'Livro da Certidão de Nascimento', max_length=20, null=True, blank=True)
    cn_folha = models.CharField(u'Folha da Certidão de Nascimento', max_length=20, null=True, blank=True)
    cn_termo = models.CharField(u'Termo da Certidão de Nascimento', max_length=20, null=True, blank=True)
    cn_data = models.DateTimeField(u'Data da Certidão de Nascimento', null=True, blank=True)
    
    class Meta:
        verbose_name=u'Dependente'
        verbose_name_plural=u'Dependentes'
    
    def __unicode__(self):
        return '%s' %(self.nome)
    
    def get_parentesco(self):
        if self.grau_parentesco == 'COM':
            return 'Companheiro(a)'
        elif self.grau_parentesco == 'FIL':
            return 'Filho(a) ou enteado(a)'
        elif self.grau_parentesco == 'IRM':
            return 'Irmão(ã), neto(a) ou bisneto(a)'
        elif self.grau_parentesco == 'PAS':
            return 'Pais, avós e bisavós'
        elif self.grau_parentesco == 'MEN':
            return 'Menor pobre'
        elif self.grau_parentesco == 'INC':
            return 'A pessoa absolutamente incapaz'
        
class TipoExame(models.Model):
    nome = models.CharField(u'Nome do Exame', max_length=50)
    
    class Meta:
        verbose_name=u'Tipo de Exame'
        verbose_name_plural=u'Tipos de Exames'
        
    def __unicode__(self):
        return '%s' %(self.nome)
    
class AtestadoSaude(models.Model):
    servidor = models.ForeignKey(Servidor)
    tipo_exame = models.ForeignKey(TipoExame)
    data_exame = models.DateField(u'Data do Exame')
    validade_exame = models.CharField(u'Válidade do Exame', max_length=20)
    data_validade = models.DateField(u'Data da Validade', null=True, blank=True)
    
    class Meta:
        verbose_name=u'Atestado de Saúde'
        verbose_name_plural=u'Atestados de Saúde'
        
    def __unicode__(self):
        return '%s' %(self.servidor.nome)
    
    def calc_data_validade(self):
        if self.validade_exame == '6 meses':
            return self.data_exame + timedelta(182)
        elif self.validade_exame == '1 ano':
            return self.data_exame + timedelta(365)
        elif self.validade_exame == '2 anos':
            return self.data_exame + timedelta(730)